{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Gaussian process regrssion demo"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Packages Loaded\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline  \n",
    "print (\"Packages Loaded\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Define training data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training data\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f7f8dbb0ed0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.array([[1, 2, 3, 4, 6, 7, 9, 10]]).T\n",
    "y = np.array([[2, 4, 5, 1, 3, 9, 11, 5]]).T\n",
    "\n",
    "# Plot\n",
    "plt.figure(1, figsize=(12, 6))\n",
    "plt.plot(x[:, 0], y[:, 0], 'ro', label='Original data')\n",
    "\n",
    "print (\"Training data\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Define kernel function "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Define kernel function\n"
     ]
    }
   ],
   "source": [
    "def kernel_se(X1, X2):\n",
    "    n1 = X1.shape[0]\n",
    "    n2 = X2.shape[0]\n",
    "    K  = np.zeros((n1, n2))\n",
    "    for i in range(n1):\n",
    "        for j in range(n2):\n",
    "            x1 = X1[i, :]\n",
    "            x2 = X2[j, :]\n",
    "            d  = x1 - x2\n",
    "            K[i, j] = 10*np.exp(-d*d/(10))\n",
    "            if n1 > 1 and i == j:\n",
    "                K[i, j] = K[i, j] + 0.001\n",
    "    return K\n",
    "print (\"Define kernel function\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Kernel matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f7f8d958f50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/lib/pymodules/python2.7/matplotlib/collections.py:548: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n",
      "  if self._edgecolors == 'face':\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f7f8d958b90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "K = kernel_se(x, x)\n",
    "plt.figure(1, figsize=(6, 6))\n",
    "plt.matshow(K)\n",
    "plt.colorbar()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Do Gaussian process regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f7f8db4c550>]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n36yv8gAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f7f8d9d21d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ntest = 100\n",
    "xtest = np.array([np.linspace(0, 10, ntest)]).T\n",
    "Ktest = kernel_se(xtest, x)\n",
    "\n",
    "# GPR\n",
    "alpha = np.matmul(np.linalg.inv(K), y)\n",
    "ytest = np.matmul(Ktest, alpha)\n",
    "plt.figure(1, figsize=(12, 6))\n",
    "plt.plot(x[:, 0], y[:, 0], 'ro', label='Original data')\n",
    "plt.plot(xtest[:, 0], ytest[:, 0], 'b-', label='GPR')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# GP Variance"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f7f8d968a10>]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsIAAAFwCAYAAACy+B06AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VNXaxuFfCiShl9A7ofdeRQLSsYBYsCAesBxRih1F\njvBZjl2KBxUrNiwUFUKV3nsLnQChEwLpIZNkZn9/LBCQoISUPZN57uva1wyTKW8gZJ5Z+11rgYiI\niIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIhInlIJWALsBMKBYRduLwEsBPYBC4Bi\ntlQnIiIiIpJDygJNLlwvBOwF6gLvAC9cuP1F4K3cL01EREREJPf8CnQB9gBlLtxW9sKfRURERETy\npKpAJFAYiLnsdp+//FlEREREJM8oBGwC+lz481+D77ncLUdERERE5Mb4Z+K++YDpwLeY1giA05iW\niFNAOSDqrw8KCQmxIiIislimiIiIiMg/igBqXO+dfTJxvynAWeDpy25/58JtbwMjMatGjPzLYy3L\nsq63HvESY8aMYcyYMXaXIW5GPxeSEf1cSEb0cyEZ8fHxgevPt9c9ItweeBDYDmy5cNtLmFUifgYG\nA4eBe673hUVERERE7HS9QXgl4HuNr3XJplpERERERHLNtcKtSI4KDQ21uwRxQ/q5kIzo50Iyop8L\nyQ7X3UORBeoRFhEREZEcl9keYY0Ii4iIiIhXUhAWEREREa+kICwiIiIiXklBWERERES8koKwiIiI\niHglBWERERER8UoKwiIiIiLilRSERURERMQrKQiLiIiIiFdSEBYRERERr6QgLCIiIiJeSUFYRERE\nRLySgrCIiIiIeCUFYRERERHxSgrCIiIiIuKVFIRFRERExCspCIuIiIiIV1IQFhERERGvpCAsIiIi\nIl5JQVhEREREvJKCsIiIiIh4JQVhEREREfFKCsIiIiIi4pUUhEVERETEKykIi4iIiIhXUhAWERER\nEa+kICwiIiIiXklBWERERES8koKwiIiIiHglBWERERER8UoKwiIiIiLilRSERURERMQrKQiLiIiI\niFdSEBYRERERr6QgLCIiIiJeSUFYRERERLySgrCIiIiIeCUFYRERERHxSgrCIiIiIuKVFIRFRERE\nxCspCIuIiIiIV1IQFhERERGvpCAsIiIiIl7J3+4CRERERMRwpDtITE0kITWBxNREyhcuT4mgElfd\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f7f8d9d2f10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "vartest = np.zeros((ntest, 1))\n",
    "for i in range(ntest):\n",
    "    xtemp  = xtest[i:i+1, :]\n",
    "    ktemp  = kernel_se(xtemp, xtemp)\n",
    "    ktemp2 = kernel_se(xtemp, x)\n",
    "    Mtemp  = np.matmul(ktemp2, np.linalg.inv(K))\n",
    "    Mtemp2 = np.matmul(Mtemp, ktemp2.T)\n",
    "    vartest[i, :] = ktemp - Mtemp2\n",
    "\n",
    "# Plot\n",
    "plt.figure(1, figsize=(12, 6))\n",
    "plt.plot(x[:, 0], y[:, 0], 'ro', label='Original data')\n",
    "plt.plot(xtest[:, 0], ytest[:, 0], 'b-', label='GPR')\n",
    "plt.plot(xtest[:, 0], ytest[:, 0] + vartest[:, 0], 'g--', label='GPR')\n",
    "plt.plot(xtest[:, 0], ytest[:, 0] - vartest[:, 0], 'g--', label='GPR')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
